為了可以讓機器人根據使用者的訊息進行特定課程回覆,需要建立一個資料庫,而 Django 提供了 SQLite 資料庫協助開發者儲存資料與原生後台。
Django 有提供欄位不同的類型,實際上在官方文件上有十幾種以上,基礎教學將列出以下幾種:
max_length
指定文字最大長度上述內容會在等等的程式碼看到。
我們必須告訴 Django 需要存放的資料庫結構 (Table Schema),以下都會在 hulolo
> chatbot
> models.py
編寫。
引入相關套件,待會會使用到:
#hulolo > chatbot > models.py
from django.db import models
from django.utils.translation import gettext_lazy as _
先新增一個名為 Course
類別用來存放課程評價的 Table,其中先含有 course_type
變數:
#hulolo > chatbot > models.py
class Course(models.Model):
class TypeInCourse(models.TextChoices):
course_type = models.CharField(
max_length=3,
verbose_name="類型",
)
因為課程類型的重複性高,固定是某幾種,適合使用選項的功能,讓新增的時候可以做選擇,可以在 Course
類別中再包一層類別名為 TypeInCourse
用來做選項:
#hulolo > chatbot > models.py
class Course(models.Model):
class TypeInCourse(models.TextChoices):
GENERAL = "GEN", _("通識課程")
EDUCATION = "EDU", _("教育學程")
PE_SOPHOMORE = "PSS", _("大二體育")
PE_JUNIOR_SENIOR = "PJS", _("大三四體育")
LANGUAGE = "LAN", _("精進中英外文")
MILITARY = "MIL", _("軍訓")
#此行以下會有剛剛 1. 的 Code
我們將 coursr_type
變數做一些修改,讓 TypeInCourse
可以正確被引入:
#hulolo > chatbot > models.py
#此段程式碼位於 Course Class
course_type = models.CharField(
max_length=3,
choices=TypeInCourse, #選項引用自 TypeInCourse
verbose_name="類型",
default=TypeInCourse.GENERAL, #預設為通識課程 TypeInCourse.GENERAL
)
default
是希望一建立新資料表就預測填入的內容。
接著將其他欄位資訊也編寫進去:
#hulolo > chatbot > models.py
#此段程式碼位於 Course Class,接續在 course_type 變數之下
course_name = models.CharField(
max_length=20,
verbose_name="課名",
help_text="以教務系統顯示的全名為主"
)
teacher_name = models.CharField(
max_length=20,
verbose_name="老師/【合開】",
help_text="【合開】連【】也要記得輸進去哦!",
)
submitter_name = models.CharField(
max_length=15,
default="匿名",
verbose_name="投稿者",
help_text="不口以超過15字"
)
feedback_content = models.TextField(
verbose_name="內容"
)
evaluation_semester = models.CharField(
max_length=5,
default="113-1",
)
last_updated_time = models.DateTimeField(
auto_now=True,
verbose_name="上次修改日期"
)
verbose_name
是之後給人類看的欄位名稱,可以取中文,稍晚會在後台管理看到;help_text
一樣會出現在後台管理,主要是放提醒管理人員的文字;auto_now
則是記錄該筆資料被修改當下的日期,可以做為上次修改日期之用。
有沒有注意到有些變數是以「全小寫加上_」,有些則是使用「單詞字首大寫」,有的則是「全大寫加上_」,這樣的規則是有規律可巡,屬於開發者之間的默契,最初是由 Python 拔拔 Guido van Rossum 的撰寫風格,後來改良沿用至今,其實用錯也不會被抓去關,但善用可幫助開發時快速了解變數的性質,也能看懂網路上的開源專案。而新手編寫程式最常見 a = 1
懶癌命名法,這樣的命名無法知道該變數的用途,當寫專案的時候可以試著依照以下規律進行命名 (Python 與 Django 慣用規則):
last_updated_time
PE_SOPHOMORE
Course
、CourseAdmin
chat-bot
小駝峰 lower camel case 則會在之後編寫網頁 JavaScript 時所使用,Python 較少使用。
在這篇文章中,我們學會了:
models.py
是主要用來編寫資料表 (Table)verbose_name
以及 help_text
可以幫助未來後台管理的辨識